#!/usr/bin/env bash

DIR=$(realpath $0) && DIR=${DIR%/*}
cd $DIR
set -e

# 使用 find 和 while read 循环来处理查找结果
# -print0 和 read -d '' 是处理包含空格等特殊字符文件名的最佳实践
find . -name "package.json" -not -path "*/node_modules/*" -print0 | while IFS= read -r -d '' pkg_file; do
  # 获取 package.json 所在的目录
  dir=$(dirname "$pkg_file")
  # 使用子 shell (...) 来执行命令，这样不会改变当前脚本的工作目录
  (
    cd "$dir" && echo "$(pwd)" && bun i
  )
done

case $(uname -s) in
Linux*)
  if ! command -v bun &>/dev/null; then
    curl -fsSL https://bun.sh/install | bash
  fi

  if ! command -v docker-compose &>/dev/null; then
    sudo curl -SL https://github.com/docker/compose/releases/download/v2.37.3/docker-compose-linux-x86_64 -o /usr/local/bin/docker-compose
    sudo chmod +x /usr/local/bin/docker-compose
  fi
  ;;
Darwin*)
  echo "当前操作系统是Mac OS"
  ;;
CYGWIN* | MINGW32* | MSYS* | MINGW*)
  echo "当前操作系统是Windows"
  ;;
*)
  echo "无法识别的操作系统"
  ;;
esac
